home *** CD-ROM | disk | FTP | other *** search
- #include "input.hpp"
- #include "key_cfg.hpp"
- #include "game.hpp"
- #include "dev.hpp"
- #include "gui.hpp"
-
- #ifdef __MAC__
- extern int PixMode;
- #endif
-
- extern int start_edit,start_running;
-
- enum monitor_draw_type {
- MONITOR_DOUBLE_PIXEL=1,
- MONITOR_SCANLINED=2,
- MONITOR_SINGLE_PIXEL=3,
- MONITOR_SMOOTH_PIXEL=4,
- MONITOR_ROUND_PIXEL=5
-
- } monitor_draw_mode=MONITOR_DOUBLE_PIXEL;
-
- enum { EDIT_SWITCH=10,
- OK,
- CANCEL
- };
-
-
- static ifield *center_ifield(ifield *i, ifield *above, window_manager *eh)
- {
- int x1,y1,x2,y2;
-
- if (above)
- {
- above->area(x1,y1,x2,y2,eh);
- i->y=y2+5;
- }
-
- i->area(x1,y1,x2,y2,eh);
- i->x=xres/2-(x2-x1)/2;
- return i;
- }
-
-
- void do_monitor_config(window_manager *eh)
- {
- int xp,yp;
- load_image_into_screen("art/mon_cfg.spe","monitor_config",xp,yp);
- ifield *first,**p;
- p=&first;
-
- ifield *first_button,**b,*prev;
- b=&first_button;
-
- int mode1=cash.reg("art/mon_cfg.spe","mode1",SPEC_IMAGE,1),
- mode1a=cash.reg("art/mon_cfg.spe","mode1+",SPEC_IMAGE,1),
- mode2=cash.reg("art/mon_cfg.spe","mode2",SPEC_IMAGE,1),
- mode2a=cash.reg("art/mon_cfg.spe","mode2+",SPEC_IMAGE,1),
- mode3=cash.reg("art/mon_cfg.spe","mode3",SPEC_IMAGE,1),
- mode3a=cash.reg("art/mon_cfg.spe","mode3+",SPEC_IMAGE,1),
- mode4=cash.reg("art/mon_cfg.spe","mode4",SPEC_IMAGE,1),
- mode4a=cash.reg("art/mon_cfg.spe","mode4+",SPEC_IMAGE,1),
- mode5=cash.reg("art/mon_cfg.spe","mode5",SPEC_IMAGE,1),
- mode5a=cash.reg("art/mon_cfg.spe","mode5+",SPEC_IMAGE,1)
- ;
-
-
- int x=xres/2-90/2,y=yp+160;
- ico_button *b1=new ico_button(x,y,MONITOR_DOUBLE_PIXEL,mode1,mode1,mode1a,mode1a,0,-1,"double_pix");
- ico_button *b2=new ico_button(x,y,MONITOR_SCANLINED,mode2,mode2,mode2a,mode2a,0,-1,"scanlined_pix");
- ico_button *b3=new ico_button(x,y,MONITOR_SINGLE_PIXEL,mode3,mode3,mode3a,mode3a,0,-1,"single_pix");
- ico_button *b4=new ico_button(x,y,MONITOR_ROUND_PIXEL,mode4,mode4,mode4a,mode4a,0,-1,"round_pix");
- ico_button *b5=new ico_button(x,y,MONITOR_SMOOTH_PIXEL,mode5,mode5,mode5a,mode5a,0,-1,"smooth_pix");
- b1->next=b2;
- b2->next=b3;
- b3->next=b4;
- b4->next=b5;
-
- prev=*p=new ico_switch_button(x,y,ID_NULL,
- monitor_draw_mode-1,b1,0);
-
- p=&((*p)->next);
-
- prev=*p=(button *)center_ifield(new button(xp+0,yp+0,EDIT_SWITCH, " Edit Mode ",0),prev,eh);
- if (dev&EDIT_MODE)
- ((button *)(*p))->push();
-
- (*p)->y+=34;
- p=&((*p)->next);
-
- image *ok_image=cash.img(cash.reg("art/frame.spe","dev_ok",SPEC_IMAGE,1))->copy(),
- *cancel_image=cash.img(cash.reg("art/frame.spe","cancel",SPEC_IMAGE,1))->copy();
-
- *p=new button(xp+315-20-8,yres/2+480/2-80,OK,ok_image,0); p=&((*p)->next);
- *p=new button(xp+315+20-8,yres/2+480/2-80,CANCEL,cancel_image,0); p=&((*p)->next);
-
- input_manager inm(screen,eh,first);
- inm.allow_no_selections();
- inm.clear_current();
- event ev;
-
- enum { looping, aborted, finished } state=looping;
-
- int new_dev=dev;
- monitor_draw_type new_monitor_draw_mode=monitor_draw_mode;
- do
- {
- eh->flush_screen();
- do { eh->get_event(ev); } while (ev.type==EV_MOUSE_MOVE && eh->event_waiting());
- inm.handle_event(ev,NULL,eh);
- if (ev.type==EV_KEY && ev.key==JK_ESC)
- state=aborted;
-
- if (ev.type==EV_MESSAGE)
- {
- switch (ev.message.id)
- {
- case OK :
- { state=finished; } break;
- case CANCEL :
- { state=aborted; } break;
- case EDIT_SWITCH :
- {
- new_dev ^= EDIT_MODE;
- } break;
-
- case MONITOR_SINGLE_PIXEL :
- { new_monitor_draw_mode=MONITOR_SINGLE_PIXEL; } break;
-
- case MONITOR_SCANLINED :
- { new_monitor_draw_mode=MONITOR_SCANLINED; } break;
-
- case MONITOR_DOUBLE_PIXEL :
- { new_monitor_draw_mode=MONITOR_DOUBLE_PIXEL; } break;
-
- case MONITOR_ROUND_PIXEL :
- { new_monitor_draw_mode=MONITOR_ROUND_PIXEL; } break;
-
- case MONITOR_SMOOTH_PIXEL :
- { new_monitor_draw_mode=MONITOR_SMOOTH_PIXEL; } break;
- }
- }
-
- } while (state==looping);
-
- if (state==finished)
- {
- dev = new_dev;
- monitor_draw_mode=new_monitor_draw_mode;
-
- #ifdef __MAC__
- switch (new_monitor_draw_mode)
- {
- case MONITOR_SINGLE_PIXEL: PixMode=1; break;
- case MONITOR_SCANLINED: PixMode=2; break;
- case MONITOR_DOUBLE_PIXEL: PixMode=3; break;
- case MONITOR_ROUND_PIXEL: PixMode=4; break;
- case MONITOR_SMOOTH_PIXEL: PixMode=5; break;
- }
- #endif
-
-
- if (dev & EDIT_MODE)
- {
- start_edit = 1;
- start_running = 1;
- disable_autolight = 1;
- }
- else
- {
- start_edit = 0;
- start_running = 0;
- disable_autolight = 0;
- }
- monitor_draw_mode=new_monitor_draw_mode;
- }
- delete ok_image;
- delete cancel_image;
-
- }
-